// MemberManagementFragment.java
package com.xxxy.ljh.myapplication.activity.Fragment;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.xxxy.ljh.myapplication.Adapter.MemberAdapter;
import com.xxxy.ljh.myapplication.R;
import com.xxxy.ljh.myapplication.model.User;
import java.util.ArrayList;
import java.util.List;

/**
 * 成员管理界面碎片类，用于展示和管理社团成员信息。
 * 提供成员列表显示、搜索成员、批量审批等功能。
 */
public class MemberManagementFragment extends Fragment {

    private RecyclerView recyclerViewMembers;
    private MemberAdapter memberAdapter;
    private List<User> memberList;
    private EditText etMemberName;
    private Button btnSearchMember, btnApproveAll;

    /**
     * 创建并返回与该碎片关联的视图层次结构。
     *
     * @param inflater           用于将XML布局文件转换为View对象的LayoutInflater实例
     * @param container          父容器视图组（可为空）
     * @param savedInstanceState 包含之前保存状态的Bundle（可为空）
     * @return 返回创建好的视图对象
     */
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_member_management, container, false);

        initViews(view);
        setupRecyclerView();
        setupEventListeners();

        loadMembers(); // 加载成员数据

        return view;
    }

    /**
     * 初始化碎片中的各个控件组件，并初始化成员列表。
     *
     * @param view 当前碎片对应的根视图
     */
    private void initViews(View view) {
        recyclerViewMembers = view.findViewById(R.id.recyclerViewMembers);
        etMemberName = view.findViewById(R.id.etMemberName);
        btnSearchMember = view.findViewById(R.id.btnSearchMember);
        btnApproveAll = view.findViewById(R.id.btnApproveAll);

        memberList = new ArrayList<>();
    }

    /**
     * 设置RecyclerView及其适配器，配置线性布局管理器以垂直排列成员项。
     */
    private void setupRecyclerView() {
        memberAdapter = new MemberAdapter(memberList);
        recyclerViewMembers.setLayoutManager(new LinearLayoutManager(getContext()));
        recyclerViewMembers.setAdapter(memberAdapter);
    }

    /**
     * 绑定按钮点击事件监听器到对应的处理方法上。
     */
    private void setupEventListeners() {
        btnSearchMember.setOnClickListener(v -> searchMember());
        btnApproveAll.setOnClickListener(v -> approveAllPendingMembers());
    }

    /**
     * 根据输入框中提供的姓名执行成员搜索逻辑。
     * 若输入为空则提示用户输入内容；否则应调用DAO层接口进行查询并更新列表。
     */
    private void searchMember() {
        String name = etMemberName.getText().toString().trim();
        if (name.isEmpty()) {
            Toast.makeText(getContext(), "请输入成员姓名", Toast.LENGTH_SHORT).show();
            return;
        }

        // 执行搜索操作
        // List<User> searchResults = memberDao.searchMembersByName(name);
        // memberList.clear();
        // memberList.addAll(searchResults);
        // memberAdapter.notifyDataSetChanged();
    }

    /**
     * 对所有处于“待审核”状态的成员执行批量审批操作。
     * 遍历当前成员列表，修改符合条件成员的状态并更新数据库。
     */
    private void approveAllPendingMembers() {
        // 批量审批待审核成员
        // for (User member : memberList) {
        //     if (member.getStatus() == PENDING_STATUS) {
        //         member.setStatus(APPROVED_STATUS);
        //         memberDao.updateMember(member);
        //     }
        // }
        // memberAdapter.notifyDataSetChanged();
        Toast.makeText(getContext(), "批量审批完成", Toast.LENGTH_SHORT).show();
    }

    /**
     * 从本地或远程数据源加载初始成员数据至列表中。
     * 应通过DAO访问具体的数据存储实现获取成员集合。
     */
    private void loadMembers() {
        // 从数据库加载成员数据
        // memberList.clear();
        // memberList.addAll(memberDao.getMembersByAssociationId(associationId));
        // memberAdapter.notifyDataSetChanged();
    }
}

